/* NDKOpenGL.c */

#include <jni.h>
#include <android/log.h>
#include <GLES/gl.h>

#include "utility/Log.h"
#include "main/ApplicationRunner.h"

static int drawWidth = 320;
static int drawHeight = 480;
static float redColor = 0.0f;

extern "C" {
	JNIEXPORT void JNICALL Java_NdkTest_main_NdkCode_ndkOpenGLInit( JNIEnv*  env );
	JNIEXPORT void JNICALL Java_NdkTest_main_NdkCode_ndkSurfaceChanged( JNIEnv*  env, jobject obj, jint width, jint height );
	JNIEXPORT void JNICALL Java_NdkTest_main_NdkCode_ndkOpenGLDraw( JNIEnv*  env );
	JNIEXPORT void JNICALL Java_NdkTest_main_NdkCode_ndkFinish();
	JNIEXPORT void JNICALL Java_NdkTest_main_NdkCode_ndkResume();
	JNIEXPORT void JNICALL Java_NdkTest_main_NdkCode_onTouchEvent( JNIEnv*  env, jobject obj, jfloat x, jfloat y, jint actionType );
};


static ApplicationRunner	s_runner;

/**
 * 初期化
 */
JNIEXPORT void Java_NdkTest_main_NdkCode_ndkOpenGLInit( JNIEnv*  env )
{
	Log::LOGI( "INIT" );

	s_runner = ApplicationRunner( 60 );
	s_runner.initialize();
}

// サーフェイス変更
JNIEXPORT void Java_NdkTest_main_NdkCode_ndkSurfaceChanged( JNIEnv*  env, jobject obj,  jint width, jint height )
{
	Log::LOGI( "サーフェイス" );
}


//　描画
JNIEXPORT void Java_NdkTest_main_NdkCode_ndkOpenGLDraw( JNIEnv*  env )
{
	s_runner.run();

	glClearColor( 1.0, 0.0f, 0.0f, 1.0f );	//　サーフェイスクリア色の指定　RGBA
	glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );	//　描画バッファクリア＆背景塗りつぶし

}


// 終了処理
JNIEXPORT void Java_NdkTest_main_NdkCode_ndkFinish()
{
	s_runner.finish();
	Log::LOGI( "おわりおわいｒおわりおわいｒおわりおわいｒおわりおわいｒおわりおわいｒおわりおわいｒおわりおわいｒおわりおわいｒおわりおわいｒおわりおわいｒ" );
}

// レジューム
JNIEXPORT void JNICALL Java_NdkTest_main_NdkCode_ndkResume()
{
	s_runner.resume();

	Log::LOGI("レジューム");
}

// タッチイベント
JNIEXPORT void JNICALL Java_NdkTest_main_NdkCode_onTouchEvent( JNIEnv*  env, jobject obj, jfloat x, jfloat y, jint actionType )
{
	Log::LOGI( "type=%d",actionType);
	s_runner.touchEvent( x, y, actionType );
}
